package LeetCode;

import java.util.LinkedList;
import java.util.Queue;

public class LC_225_ImplementStackusingQueues {

    public static void main(String[] args) {

    }

    class MyStack {
        Queue<Integer> q1 = new LinkedList<>();
        Queue<Integer> q2 = new LinkedList<>();

        public void push(int x) {
            q1.add(x);
        }

        public int pop() {
            int size = q1.size();
            for (int i = 1; i < size; i++) {
                q2.add(q1.poll());
            }
            int x = q1.poll();
            for (int i = 1; i < size; i++) {
                q1.add(q2.poll());
            }
            return x;
        }

        public int top() {
            int size = q1.size();
            for (int i = 1; i < size; i++) {
                q2.add(q1.poll());
            }
            int top = q1.peek();
            q2.add(q1.poll());
            for (int i = 0; i < size; i++) {
                q1.add(q2.poll());
            }
            return top;
        }

        public boolean empty() {
            return q1.size() == 0;
        }
    }

}